﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Gwn.Library.MvpVm.Base;
using Gwn.Library.MvpVm.Entities;
using Gwn.Library.MvpVm.ViewModels.Interfaces;

namespace Gwn.Library.MvpVm.ViewModels
{
    /// <summary>
    /// User view model
    /// </summary>
    public class UserViewModel : ViewModelBase
    {
        private string _firstName;
        private string _lastName;
        private string _middleName;
        private DateTime _dateOfBirth;
        private ISecurityViewModel _securityViewModel;

        /// <summary>
        /// Gets or sets the first name.
        /// </summary>
        /// <value>The first name.</value>
        public string FirstName
        {
            get { return _firstName; }
            set
            {
                _firstName = value;
                OnPropertyChanged("FirstName");
            }
        }

        /// <summary>
        /// Gets or sets the last name.
        /// </summary>
        /// <value>The last name.</value>
        public string LastName
        {
            get { return _lastName; }
            set
            {
                _lastName = value;
                OnPropertyChanged("LastName");
            }
        }

        /// <summary>
        /// Gets or sets the name of the middle.
        /// </summary>
        /// <value>The name of the middle.</value>
        public string MiddleName
        {
            get { return _middleName; }
            set
            {
                _middleName = value;
                OnPropertyChanged("MiddleName");
            }
        }

        /// <summary>
        /// Gets or sets the date of birth.
        /// </summary>
        /// <value>The date of birth.</value>
        public DateTime DateOfBirth
        {
            get { return _dateOfBirth; }
            set
            {
                _dateOfBirth = value;
                OnPropertyChanged("DateOfBirth");
            }
        }

        /// <summary>
        /// Gets or sets the security view model.
        /// </summary>
        /// <value>The security view model.</value>
        public ISecurityViewModel SecurityViewModel
        {
            get { return _securityViewModel; }
            set
            {
                _securityViewModel = value;
                OnPropertyChanged("SecurityViewModel");
            }
        }
    }
}
